//手写promise.race的方法
const p1 = Promise.reject(1)
const p2 = Promise.resolve(2)
const p3 = Promise.resolve(3)
const p4 = Promise.reject(4)

Promise._race = function (arr) {
  return new Promise(function (resolve,reject) {
    if (!arr instanceof Array) return reject(new Error('必须为数组'))
    // 数组中的每一项是promise对象
    for (let i = 0; i < arr.length; i++){
      // 从js的角度去考虑，链式调用
      arr[i].then(success => {
        // resolve(success)
        console.log(success +'成功')
      }).catch(err => { 
        console.log(err + '失败');
       });
      // arr[i].catch(re => {
      //   reject(re)
      // })
    }
    // for (let i = 0; i < arr.length; i++){
    //   Promise.resolve(arr[i]).then(success => {
    //     // console.log(i+'成功')
    //     resolve(success)
    //   }, error => {
    //     // console.log(i+'错误')
    //     reject(error)
    //   })
    // }
    // for (item of arr) {
    //   Promise.resolve(item).then(resolve,reject)
    // }
  })
}
// 测试的代码
Promise._race([p1, p2, p3,p4]).then(result => {
  // console.log(result)
}).catch(error => {
  // console.log(error)
})

